Unless otherwise indicated herein, approaches described in this section are not prior art to the claims listed below and are not admitted to be prior art by inclusion in this section.
Video coding is a process in which a sequence of video frames occupying different temporal positions is coded as a bitstream. A video encoder encodes video pixel data into the bitstream and a video decoder decodes the bitstream to reconstruct the video pixel data. Pixel data of each video frame is typically encoded as blocks of pixels (herein referred to as “pixel blocks”, “coding units”, and “macroblocks”). A pixel block can be encoded in the bitstream as compressed transform data or as motion vectors (MVs) that reference pixel data outside of the pixel block. The process of reconstructing a pixel block by referencing pixel data outside of the pixel block is called motion compensation. A pixel block that uses a MV to reference pixel data in other video frames in the video sequence is an inter-predicted block (as opposed to intra-coded or intra-predicted blocks, which do not reference pixel data in other video frames).
For efficient signaling of MVs, a video codec may use MV prediction to reduce the amount of motion data to be sent or stored in the bitstream. MV prediction is a technique in which a video codec generates predictions of MVs based on other MVs. The generated predictions provide some or all of the motion data needed to construct MVs used for motion compensation. The predictions are locally generated at the codec so that the amount of motion data that needs to in the bitstream is reduced.
For video encoding standards such as H.265 High Efficiency Video Coding (HEVC), there are two types of MV prediction. One is spatial MV prediction, in which a coded MV of a spatially neighboring block or prediction unit is used for predicting an MV of a current block. The other is temporal MV prediction, in which a coded MV of a reference frame is used to predict the MV of the current block.